﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SanFranciscoModel.Curso;
using SanFranciscoModel.Materia;
using SanFranciscoModel.Utiles;
using SanFranciscoModel.Docente;
using SanFranciscoModel.Intermedias;
using SanFranciscoModel.Horarios;
using SanFranciscoModel.Docente;
using SanFranciscoModel.Materia;
using SanFranciscoModel.Curso;
using SanFranciscoModel.Maestros;

namespace SanFrancisco
{

    public partial class ModificarCurso : Form
    {
        List<Docente> _ListDocente = new List<SanFranciscoModel.Docente.Docente>();
        List<Materia> _ListMateria = new List<Materia>();
        DocenteManager _DocenteManager = new SanFranciscoModel.Docente.DocenteManager();
        MateriaManager _MateriaManager = new SanFranciscoModel.Materia.MateriaManager();
        List<HorarioDocente> _ListHorarioDocente = new List<HorarioDocente>();
        int _idCurso;

        public ModificarCurso()
        {
            CursoManager cm = new SanFranciscoModel.Curso.CursoManager();
            _idCurso = cm.getNewIdCurso();
            InitializeComponent();
            txtAnio.Text = DateTime.Now.Year.ToString();
        }



        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (cmbAno.SelectedItem==null)
            {
                MessageBox.Show("Debe seleccionar un nombre para el Curso!");
            }
            else
            {
                Curso curso = new Curso();
                curso.Año = 2013;
                curso.NombreCurso = cmbAno.SelectedItem.ToString();
                curso.idCurso = CursoManager.getCursobyNombre(cmbAno.SelectedItem.ToString()).idCurso;
                if (ComprovarIngresos())
                {
                    //paso a segunda etapa donde asigo los docentes a las materias
                    GuardarEnLista();
                    SeleccionarDocentesParaCursoModificar s = new SeleccionarDocentesParaCursoModificar(_ListHorarioDocente, curso, this);
                    s.Show();
                }
            }

        }

        private void GuardarEnLista()
        {
            AgregarALista(1, 1, _MateriaManager.getMateriaByNombre(cmb11.SelectedItem.ToString()).idMateria);
            AgregarALista(1, 2, _MateriaManager.getMateriaByNombre(cmb12.SelectedItem.ToString()).idMateria);
            AgregarALista(1, 3, _MateriaManager.getMateriaByNombre(cmb13.SelectedItem.ToString()).idMateria);
            AgregarALista(1, 4, _MateriaManager.getMateriaByNombre(cmb14.SelectedItem.ToString()).idMateria);
            AgregarALista(1, 5, _MateriaManager.getMateriaByNombre(cmb15.SelectedItem.ToString()).idMateria);

            AgregarALista(2, 1, _MateriaManager.getMateriaByNombre(cmb21.SelectedItem.ToString()).idMateria);
            AgregarALista(2, 2, _MateriaManager.getMateriaByNombre(cmb22.SelectedItem.ToString()).idMateria);
            AgregarALista(2, 3, _MateriaManager.getMateriaByNombre(cmb23.SelectedItem.ToString()).idMateria);
            AgregarALista(2, 4, _MateriaManager.getMateriaByNombre(cmb24.SelectedItem.ToString()).idMateria);
            AgregarALista(2, 5, _MateriaManager.getMateriaByNombre(cmb25.SelectedItem.ToString()).idMateria);

            AgregarALista(3, 1, _MateriaManager.getMateriaByNombre(cmb31.SelectedItem.ToString()).idMateria);
            AgregarALista(3, 2, _MateriaManager.getMateriaByNombre(cmb32.SelectedItem.ToString()).idMateria);
            AgregarALista(3, 3, _MateriaManager.getMateriaByNombre(cmb33.SelectedItem.ToString()).idMateria);
            AgregarALista(3, 4, _MateriaManager.getMateriaByNombre(cmb34.SelectedItem.ToString()).idMateria);
            AgregarALista(3, 5, _MateriaManager.getMateriaByNombre(cmb35.SelectedItem.ToString()).idMateria);

            AgregarALista(4, 1, _MateriaManager.getMateriaByNombre(cmb41.SelectedItem.ToString()).idMateria);
            AgregarALista(4, 2, _MateriaManager.getMateriaByNombre(cmb42.SelectedItem.ToString()).idMateria);
            AgregarALista(4, 3, _MateriaManager.getMateriaByNombre(cmb43.SelectedItem.ToString()).idMateria);
            AgregarALista(4, 4, _MateriaManager.getMateriaByNombre(cmb44.SelectedItem.ToString()).idMateria);
            AgregarALista(4, 5, _MateriaManager.getMateriaByNombre(cmb45.SelectedItem.ToString()).idMateria);

            AgregarALista(5, 1, _MateriaManager.getMateriaByNombre(cmb51.SelectedItem.ToString()).idMateria);
            AgregarALista(5, 2, _MateriaManager.getMateriaByNombre(cmb52.SelectedItem.ToString()).idMateria);
            AgregarALista(5, 3, _MateriaManager.getMateriaByNombre(cmb53.SelectedItem.ToString()).idMateria);
            AgregarALista(5, 4, _MateriaManager.getMateriaByNombre(cmb54.SelectedItem.ToString()).idMateria);
            AgregarALista(5, 5, _MateriaManager.getMateriaByNombre(cmb55.SelectedItem.ToString()).idMateria);

            AgregarALista(6, 1, _MateriaManager.getMateriaByNombre(cmb61.SelectedItem.ToString()).idMateria);
            AgregarALista(6, 2, _MateriaManager.getMateriaByNombre(cmb62.SelectedItem.ToString()).idMateria);
            AgregarALista(6, 3, _MateriaManager.getMateriaByNombre(cmb63.SelectedItem.ToString()).idMateria);
            AgregarALista(6, 4, _MateriaManager.getMateriaByNombre(cmb64.SelectedItem.ToString()).idMateria);
            AgregarALista(6, 5, _MateriaManager.getMateriaByNombre(cmb65.SelectedItem.ToString()).idMateria);

        }

        private void AgregarALista(int hora, int dia, int idmateria)
        {
            HorarioDocente hr = new HorarioDocente();
            hr.IdHora = hora;
            hr.IdDia = dia;
            hr.IdMateria = idmateria;
            _ListHorarioDocente.Add(hr);
        }

        private bool ComprovarIngresos()
        {
            if (cmb11.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 1 y dia 1");
                return false;
            }
            if (cmb12.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 1 y dia 2");
                return false;
            }
            if (cmb13.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 1 y dia 3");
                return false;
            }
            if (cmb14.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 1 y dia 4");
                return false;
            }
            if (cmb15.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 1 y dia 5");
                return false;
            }

            if (cmb21.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 2 y dia 1");
                return false;
            }
            if (cmb22.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 2 y dia 2");
                return false;
            }
            if (cmb23.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 2 y dia 3");
                return false;
            }
            if (cmb24.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 2 y dia 4");
                return false;
            }
            if (cmb25.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 2 y dia 5");
                return false;
            }

            if (cmb31.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 3 y dia 1");
                return false;
            }
            if (cmb32.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 3 y dia 2");
                return false;
            }
            if (cmb33.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 3 y dia 3");
                return false;
            }
            if (cmb34.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 3 y dia 4");
                return false;
            }
            if (cmb35.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 3 y dia 5");
                return false;
            }

            if (cmb41.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 4 y dia 1");
                return false;
            }
            if (cmb42.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 4 y dia 2");
                return false;
            }
            if (cmb43.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 4 y dia 3");
                return false;
            }
            if (cmb44.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 4 y dia 4");
                return false;
            }
            if (cmb45.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 4 y dia 5");
                return false;
            }

            if (cmb51.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 5 y dia 1");
                return false;
            }
            if (cmb52.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 5 y dia 2");
                return false;
            }
            if (cmb53.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 5 y dia 3");
                return false;
            }
            if (cmb54.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 5 y dia 4");
                return false;
            }
            if (cmb55.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 5 y dia 5");
                return false;
            }

            if (cmb61.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 6 y dia 1");
                return false;
            }
            if (cmb62.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 6 y dia 2");
                return false;
            }
            if (cmb63.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 6 y dia 3");
                return false;
            }
            if (cmb64.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 6 y dia 4");
                return false;
            }
            if (cmb65.SelectedItem == null)
            {
                MessageBox.Show("Debe completar hora 6 y dia 5");
                return false;
            }

            return true;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void AltaCurso_Load(object sender, EventArgs e)
        {
            CursoManager CursoManager = new SanFranciscoModel.Curso.CursoManager();
            List<Curso> ListCurso = CursoManager.getCursoActual();

            foreach (Curso c in ListCurso)
            {
                string x = c.NombreCurso;
                cmbAno.Items.Add(x);
            }

            CargarHorarios();
            CargarMaterias();
        }

        private void CargarHorarios()
        {
            HorarioManager HorarioManager = new HorarioManager();
            List<Horario> ListHorario = HorarioManager.GetAllHorarios();


            foreach (Horario h in ListHorario)
            {
                    if (h.IdHora == 1)
                        d1.Text = ConvertirHora(h.Inicio.ToString());
                    if (h.IdHora == 2)
                        d2.Text = ConvertirHora(h.Inicio.ToString());
                    if (h.IdHora == 3)
                        d3.Text = ConvertirHora(h.Inicio.ToString());
                    if (h.IdHora == 4)
                        d4.Text = ConvertirHora(h.Inicio.ToString());
                    if (h.IdHora == 5)
                        d5.Text = ConvertirHora(h.Inicio.ToString());
                    if (h.IdHora == 6)
                        d6.Text = ConvertirHora(h.Inicio.ToString());
            }

        }

        public void CargarMaterias()
        {
            MateriaManager MateriaManager = new SanFranciscoModel.Materia.MateriaManager();
            List<Materia> ListMateria = MateriaManager.getMateriasAll();

            foreach (Materia m in ListMateria)
            {
                cmb11.Items.Add(m.Materia1);
                cmb12.Items.Add(m.Materia1);
                cmb13.Items.Add(m.Materia1);
                cmb14.Items.Add(m.Materia1);
                cmb15.Items.Add(m.Materia1);

                cmb21.Items.Add(m.Materia1);
                cmb22.Items.Add(m.Materia1);
                cmb23.Items.Add(m.Materia1);
                cmb24.Items.Add(m.Materia1);
                cmb25.Items.Add(m.Materia1);

                cmb31.Items.Add(m.Materia1);
                cmb32.Items.Add(m.Materia1);
                cmb33.Items.Add(m.Materia1);
                cmb34.Items.Add(m.Materia1);
                cmb35.Items.Add(m.Materia1);

                cmb41.Items.Add(m.Materia1);
                cmb42.Items.Add(m.Materia1);
                cmb43.Items.Add(m.Materia1);
                cmb44.Items.Add(m.Materia1);
                cmb45.Items.Add(m.Materia1);

                cmb51.Items.Add(m.Materia1);
                cmb52.Items.Add(m.Materia1);
                cmb53.Items.Add(m.Materia1);
                cmb54.Items.Add(m.Materia1);
                cmb55.Items.Add(m.Materia1);

                cmb61.Items.Add(m.Materia1);
                cmb62.Items.Add(m.Materia1);
                cmb63.Items.Add(m.Materia1);
                cmb64.Items.Add(m.Materia1);
                cmb65.Items.Add(m.Materia1);
            }

            
        }

        public void CargarInfoCurso()
        {
            //Selecciono las materias como tenian los combos
            DocenteManager DocenteManager = new SanFranciscoModel.Docente.DocenteManager();
            MateriaManager MateriaManager = new SanFranciscoModel.Materia.MateriaManager();
            List<HorarioDocente> ListDocenteHorario = DocenteManager.GetDocenteHorarioByIdCurso(CursoManager.getCursobyNombre(cmbAno.SelectedItem.ToString()).idCurso);

            foreach (HorarioDocente hd in ListDocenteHorario)
            {
                if (hd.IdHora == 1 && hd.IdDia == 1)
                {
                    cmb11.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb11.Enabled = true;
                }
                if (hd.IdHora == 1 && hd.IdDia == 2)
                {
                    cmb12.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb12.Enabled = true;
                }
                if (hd.IdHora == 1 && hd.IdDia == 3)
                {
                    cmb13.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb13.Enabled = true;
                }
                if (hd.IdHora == 1 && hd.IdDia == 4)
                {
                    cmb14.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb14.Enabled = true;
                }
                if (hd.IdHora == 1 && hd.IdDia == 5)
                {
                    cmb15.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb15.Enabled = true;
                }

                if (hd.IdHora == 2 && hd.IdDia == 1)
                {
                    cmb21.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb21.Enabled = true;
                }
                if (hd.IdHora == 2 && hd.IdDia == 2)
                {
                    cmb22.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb22.Enabled = true;
                }
                if (hd.IdHora == 2 && hd.IdDia == 3)
                {
                    cmb23.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb23.Enabled = true;
                }
                if (hd.IdHora == 2 && hd.IdDia == 4)
                {
                    cmb24.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb24.Enabled = true;
                }
                if (hd.IdHora == 2 && hd.IdDia == 5)
                {
                    cmb25.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb25.Enabled = true;
                }

                if (hd.IdHora == 3 && hd.IdDia == 1)
                {
                    cmb31.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb31.Enabled = true;
                }
                if (hd.IdHora == 3 && hd.IdDia == 2)
                {
                    cmb32.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb32.Enabled = true;
                }
                if (hd.IdHora == 3 && hd.IdDia == 3)
                {
                    cmb33.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb33.Enabled = true;
                }
                if (hd.IdHora == 3 && hd.IdDia == 4)
                {
                    cmb34.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb34.Enabled = true;
                }
                if (hd.IdHora == 3 && hd.IdDia == 5)
                {
                    cmb35.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb35.Enabled = true;
                }

                if (hd.IdHora == 4 && hd.IdDia == 1)
                {
                    cmb41.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb41.Enabled = true;
                }
                if (hd.IdHora == 4 && hd.IdDia == 2)
                {
                    cmb42.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb42.Enabled = true;
                }
                if (hd.IdHora == 4 && hd.IdDia == 3)
                {
                    cmb43.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb43.Enabled = true;
                }
                if (hd.IdHora == 4 && hd.IdDia == 4)
                {
                    cmb44.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb44.Enabled = true;
                }
                if (hd.IdHora == 4 && hd.IdDia == 5)
                {
                    cmb45.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb45.Enabled = true;
                }

                if (hd.IdHora == 5 && hd.IdDia == 1)
                {
                    cmb51.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb51.Enabled = true;
                }
                if (hd.IdHora == 5 && hd.IdDia == 2)
                {
                    cmb52.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb52.Enabled = true;
                }
                if (hd.IdHora == 5 && hd.IdDia == 3)
                {
                    cmb53.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb53.Enabled = true;
                }
                if (hd.IdHora == 5 && hd.IdDia == 4)
                {
                    cmb54.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb54.Enabled = true;
                }
                if (hd.IdHora == 5 && hd.IdDia == 5)
                {
                    cmb55.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb55.Enabled = true;
                }

                if (hd.IdHora == 6 && hd.IdDia == 1)
                {
                    cmb61.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb61.Enabled = true;
                }
                if (hd.IdHora == 6 && hd.IdDia == 2)
                {
                    cmb62.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb62.Enabled = true;
                }
                if (hd.IdHora == 6 && hd.IdDia == 3)
                {
                    cmb63.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb63.Enabled = true;
                }
                if (hd.IdHora == 6 && hd.IdDia == 4)
                {
                    cmb64.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb64.Enabled = true;
                }
                if (hd.IdHora == 6 && hd.IdDia == 5)
                {
                    cmb65.Text = MateriaManager.getMateriasByIdMateria(hd.IdMateria).Materia1;
                    cmb65.Enabled = true;
                }
            }
        }

        public string ConvertirHora(string h)
        {
            string hora = string.Empty;

            if (h.Count() == 3)
            {
                int flag = 0;
                hora += "0";
                foreach (char c in h)
                {
                    if (flag == 1)
                    {
                        hora += ":";
                    }
                    hora += c;
                    flag++;
                }
            }
            else
            {
                if (h.Count() == 4)
                {
                    int flag = 0;
                    foreach (char c in h)
                    {
                        if (flag == 2)
                        {
                            hora += ":";
                        }
                        hora += c;
                        flag++;
                    }
                }
            }
            return hora;
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            
        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void cmbAno_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarInfoCurso();
        }

    }
}
